package com.whale.cloud.util.redis;

import com.whale.cloud.util.redis.ListOps;
import com.whale.cloud.util.redis.SetOps;
import com.whale.cloud.util.redis.ValueOps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import lombok.Data;

/** Created by Abel on 2017/5/31. */
@Data
@Service
public class RedisClient {

  @Autowired private RedisTemplate<Object, Object> redisTemplate;

  @Autowired private ValueOps valueOps;
  @Autowired private SetOps setOps;
  @Autowired private ListOps listOps;

  /**
   * 删除键值
   *
   * @param key
   * @return
   */
  public boolean delete(String key) {
    redisTemplate.delete(key);
    return true;
  }

  /**
   * 设置key过期时间
   *
   * @param key
   * @param secs
   * @return
   */
  public boolean setExpire(String key, Long secs) {
    redisTemplate.expire(key, secs, TimeUnit.SECONDS);
    return true;
  }

  /**
   * 设置key在指定时间过期
   *
   * @param key
   * @param expireData
   * @return
   */
  public boolean setExpireAt(String key, Date expireData) {
    redisTemplate.expireAt(key, expireData);
    return true;
  }

  //  @Autowired private StringRedisTemplate stringRedisTemplate;
  //
  //  @Autowired private RedisTemplate<Object, Object> redisTemplate;
  //
  //  /**
  //   * 设置 String 型值
  //   *
  //   * @param key
  //   * @param value
  //   */
  //  public void setValueString(String key, String value) {
  //    stringRedisTemplate.opsForValue().set(key, value);
  //  }
  //
  //  /**
  //   * 获取 String 型值
  //   *
  //   * @param key
  //   * @return
  //   */
  //  public String getValueString(String key) {
  //    return stringRedisTemplate.opsForValue().get(key);
  //  }
  //
  //  /**
  //   * 设置 Object 类型值
  //   *
  //   * @param key
  //   * @param object
  //   */
  //  public void setValueObject(String key, Object object) {
  //    redisTemplate.opsForValue().set(key, object);
  //  }
  //
  //  /**
  //   * 获取 Object 类型值
  //   *
  //   * @param key
  //   */
  //  public Object getValueObject(String key) {
  //    return redisTemplate.opsForValue().get(key);
  //  }
  //
  //  public Object getListObject(String key) {
  //
  //    //      redisTemplate.opsForList(). (key);
  //    return new Object();
  //  }

}
